(function() {
	var STK = (function() {
		var spec = {
			dependCacheList : {},
			importCacheStore : {},
			importCacheList : [],
			jobsCacheList : []
		};
		var that = {};
		var lastPoint = 1;
		var baseURL = "";
		var errorInfo = [];
		var register = function(ns, maker) {
			var path = ns.split(".");
			var curr = that;
			for ( var i = 0, len = path.length; i < len; i += 1) {
				if (i == len - 1) {
					if (curr[path[i]] !== undefined) {
						throw ns + "has been register!!!"
					}
					curr[path[i]] = maker(that);
					return true
				}
				if (curr[path[i]] === undefined) {
					curr[path[i]] = {}
				}
				curr = curr[path[i]]
			}
		};
		var checkPath = function(ns) {
			var list = ns.split(".");
			var curr = that;
			for ( var i = 0, len = list.length; i < len; i += 1) {
				if (curr[list[i]] === undefined) {
					return false
				}
				curr = curr[list[i]]
			}
			return true
		};
		var checkDepend = function() {
			for ( var k in spec.dependCacheList) {
				var loaded = true;
				for ( var i = 0, len = spec.dependCacheList[k]["depend"].length; i < len; i += 1) {
					if (!checkPath(spec.dependCacheList[k]["depend"][i])) {
						loaded = false;
						break
					}
				}
				if (loaded) {
					register.apply(that, spec.dependCacheList[k]["args"]);
					delete spec.dependCacheList[k];
					setTimeout(function() {
						checkDepend()
					}, 25)
				}
			}
		};
		var E = function(id) {
			if (typeof id === "string") {
				return document.getElementById(id)
			} else {
				return id
			}
		};
		var addEvent = function(sNode, sEventType, oFunc) {
			var oElement = E(sNode);
			if (oElement == null) {
				return
			}
			sEventType = sEventType || "click";
			if ((typeof oFunc).toLowerCase() != "function") {
				return
			}
			if (oElement.attachEvent) {
				oElement.attachEvent("on" + sEventType, oFunc)
			} else {
				if (oElement.addEventListener) {
					oElement.addEventListener(sEventType, oFunc, false)
				} else {
					oElement["on" + sEventType] = oFunc
				}
			}
		};
		that.inc = function(ns, undepended) {
			if (!spec.importCacheList) {
				spec.importCacheList = []
			}
			for ( var i = 0, len = spec.importCacheList.length; i < len; i += 1) {
				if (spec.importCacheList[i] === ns) {
					if (!undepended) {
						spec.importCacheList.push(ns)
					}
					return false
				}
			}
			if (!undepended) {
				spec.importCacheList.push(ns)
			}
			spec.importCacheStore[ns] = false;
			var js = document.createElement("SCRIPT");
			js.setAttribute("type", "text/javascript");
			js.setAttribute("src", baseURL + ns.replace(/\./ig, "/") + ".js");
			js.setAttribute("charset", "utf-8");
			js[that.IE ? "onreadystatechange" : "onload"] = function() {
				if (!that.IE || this.readyState.toLowerCase() == "complete"
						|| this.readyState.toLowerCase() == "loaded") {
					lastPoint = spec.importCacheList.length;
					spec.importCacheStore[ns] = true;
					checkDepend()
				}
			};
			document.getElementsByTagName("HEAD")[0].appendChild(js)
		};
		that.register = function(ns, maker, shortName) {
			spec.dependCacheList[ns] = {
				args : arguments,
				depend : spec.importCacheList.slice(lastPoint,
						spec.importCacheList.length),
				"short" : shortName
			};
			lastPoint = spec.importCacheList.length;
			checkDepend()
		};
		that.regShort = function(sname, sfun) {
			if (that[sname] !== undefined) {
				throw sname + ":show has been register"
			}
			that[sname] = sfun
		};
		that.setBaseURL = function(url) {
			baseURL = url
		};
		that.getErrorInfo = function() {
			return errorInfo
		};
		that.IE = /msie/i.test(navigator.userAgent);
		that.E = E;
		that.C = function(tagName) {
			var dom;
			tagName = tagName.toUpperCase();
			if (tagName == "TEXT") {
				dom = document.createTextNode("")
			} else {
				if (tagName == "BUFFER") {
					dom = document.createDocumentFragment()
				} else {
					dom = document.createElement(tagName)
				}
			}
			return dom
		};
		that.Ready = (function() {
			var funcList = [];
			var inited = false;
			var exec_func_list = function() {
				if (inited == true) {
					return
				}
				inited = true;
				for ( var i = 0, len = funcList.length; i < len; i++) {
					if ((typeof funcList[i]).toLowerCase() == "function") {
						funcList[i].call()
					}
				}
				funcList = []
			};
			if (document.attachEvent && window == window.top) {
				(function() {
					try {
						document.documentElement.doScroll("left")
					} catch (e) {
						setTimeout(arguments.callee, 0);
						return
					}
					exec_func_list()
				})()
			} else {
				if (document.addEventListener) {
					addEvent(document, "DOMContentLoaded", exec_func_list)
				} else {
					if (/WebKit/i.test(navigator.userAgent)) {
						(function() {
							if (/loaded|complete/.test(document.readyState
									.toLowerCase())) {
								exec_func_list();
								return
							}
							setTimeout(arguments.callee, 25)
						})()
					}
				}
			}
			addEvent(window, "load", exec_func_list);
			return function(oFunc) {
				if (inited == true
						|| (/loaded|complete/).test(document.readyState
								.toLowerCase())) {
					if ((typeof oFunc).toLowerCase() == "function") {
						oFunc.call()
					}
				} else {
					funcList.push(oFunc)
				}
			}
		})();
		return that
	})();
	$Import = STK.inc;
	STK.register("core.dom.setStyle", function($) {
		return function(node, property, val) {
			if ($.IE) {
				switch (property) {
				case "opacity":
					node.style.filter = "alpha(opacity=" + (val * 100) + ")";
					if (!node.currentStyle || !node.currentStyle.hasLayout) {
						node.style.zoom = 1
					}
					break;
				case "float":
					property = "styleFloat";
				default:
					node.style[property] = val
				}
			} else {
				if (property == "float") {
					property = "cssFloat"
				}
				node.style[property] = val
			}
		}
	});
	STK
			.register(
					"core.dom.getStyle",
					function($) {
						return function(node, property) {
							if ($.IE) {
								switch (property) {
								case "opacity":
									var val = 100;
									try {
										val = node.filters["DXImageTransform.Microsoft.Alpha"].opacity
									} catch (e) {
										try {
											val = node.filters("alpha").opacity
										} catch (e) {
										}
									}
									return val / 100;
								case "float":
									property = "styleFloat";
								default:
									var value = node.currentStyle ? node.currentStyle[property]
											: null;
									return (node.style[property] || value)
								}
							} else {
								if (property == "float") {
									property = "cssFloat"
								}
								try {
									var computed = document.defaultView
											.getComputedStyle(node, "")
								} catch (e) {
									traceError(e)
								}
								return node.style[property] || computed ? computed[property]
										: null
							}
						}
					});
	STK.register("core.util.browser", function($) {
		var ua = navigator.userAgent.toLowerCase();
		var ret = {
			IE : /msie/.test(ua),
			OPERA : /opera/.test(ua),
			MOZ : /gecko/.test(ua),
			IE5 : /msie 5 /.test(ua),
			IE55 : /msie 5.5/.test(ua),
			IE6 : /msie 6/.test(ua),
			IE7 : /msie 7/.test(ua),
			SAFARI : /safari/.test(ua)
		};
		return ret
	});
	STK
			.register(
					"core.dom.position",
					function($) {
						var _getStyle = function(o, p) {
							var _ret = $.core.dom.getStyle(o, p);
							return (typeof _ret == "string") ? _ret
									.toLowerCase() : _ret
						};
						return function(oElement) {
							if (oElement == document.body) {
								return false
							}
							if (oElement.parentNode == null) {
								return false
							}
							if (oElement.offsetParent == null
									&& _getStyle(oElement, "position") != "fixed") {
								return false
							}
							if (_getStyle(oElement, "display") == "none") {
								return false
							}
							var parent = null, pos = [], box;
							var scrollTop, scrollLeft, borderLeft, borderTop;
							if (oElement.getBoundingClientRect) {
								box = oElement.getBoundingClientRect();
								scrollTop = Math.max(
										document.documentElement.scrollTop,
										document.body.scrollTop);
								scrollLeft = Math.max(
										document.documentElement.scrollLeft,
										document.body.scrollLeft);
								return {
									l : parseInt(box.left + scrollLeft, 10) || 0,
									t : parseInt(box.top + scrollTop, 10) || 0
								}
							} else {
								if (document.getBoxObjectFor) {
									box = document.getBoxObjectFor(oElement);
									borderLeft = (_getStyle(oElement,
											"borderLeftWidth")) ? parseInt(
											_getStyle(oElement,
													"borderLeftWidth"), 10) : 0;
									borderTop = (_getStyle(oElement,
											"borderTopWidth")) ? parseInt(
											_getStyle(oElement,
													"borderTopWidth"), 10) : 0;
									pos = [ box.x - borderLeft,
											box.y - borderTop ]
								} else {
									pos = [ oElement.offsetLeft,
											oElement.offsetTop ];
									parent = oElement.offsetParent;
									if (parent != oElement) {
										while (parent) {
											pos[0] += parent.offsetLeft;
											pos[1] += parent.offsetTop;
											parent = parent.offsetParent
										}
									}
									if ($.core.util.browser.OPERA != -1
											|| ($.core.util.browser.SAFARI != -1 && _getStyle(
													oElement, "position") == "absolute")) {
										pos[0] -= document.body.offsetLeft;
										pos[1] -= document.body.offsetTop
									}
								}
							}
							if (oElement.parentNode) {
								parent = oElement.parentNode
							} else {
								parent = null
							}
							while (parent
									&& !/^body|html$/i.test(parent.tagName)) {
								if (_getStyle(parent, "display").search(
										/^inline|table-row.*$/i)) {
									pos[0] -= parent.scrollLeft;
									pos[1] -= parent.scrollTop
								}
								parent = parent.parentNode
							}
							return {
								l : parseInt(pos[0], 10),
								t : parseInt(pos[1], 10)
							}
						}
					});
	STK.register("core.dom.removeNode", function($) {
		return function(node) {
			node = $.E(node) || node;
			try {
				node.parentNode.removeChild(node)
			} catch (e) {
			}
		}
	});
	STK.register("core.arr.isArray", function($) {
		return function(o) {
			return Object.prototype.toString.call(o) === "[object Array]"
		}
	});
	STK.register("core.arr.foreach", function($) {
		return function(o, insp) {
			if (!$.core.arr.isArray(o)) {
				throw "the foreach function needs an array as first parameter"
			}
			var r = [];
			for ( var i = 0, len = o.length; i < len; i += 1) {
				var x = insp(o[i], i);
				if (x !== null) {
					r[i] = x
				}
			}
			return r
		}
	});
	STK.register("core.str.bLength", function($) {
		return function(str) {
			if (!str) {
				return 0
			}
			var aMatch = str.match(/[^\x00-\xff]/g);
			return (str.length + (!aMatch ? 0 : aMatch.length))
		}
	});
	STK.register("core.str.leftB", function($) {
		return function(str, lens) {
			var s = str.replace(/\*/g, " ").replace(/[^\x00-\xff]/g, "**");
			str = str.slice(0, s.slice(0, lens).replace(/\*\*/g, " ").replace(
					/\*/g, "").length);
			if ($.core.str.bLength(str) > lens && lens > 0) {
				str = str.slice(0, str.length - 1)
			}
			return str
		}
	});
	STK.register("core.str.trim", function($) {
		return function(str) {
			if (typeof str !== "string") {
				throw "trim need a string as parameter"
			}
			if (typeof str.trim === "function") {
				return str.trim()
			} else {
				return str.replace(
						/^(\u3000|\s|\t|\u00A0)*|(\u3000|\s|\t|\u00A0)*$/g, "")
			}
		}
	});
	STK.register("core.evt.addEvent", function($) {
		return function(sNode, sEventType, oFunc) {
			var oElement = $.E(sNode);
			if (oElement == null) {
				return false
			}
			sEventType = sEventType || "click";
			if ((typeof oFunc).toLowerCase() != "function") {
				return
			}
			if (oElement.attachEvent) {
				oElement.attachEvent("on" + sEventType, oFunc)
			} else {
				if (oElement.addEventListener) {
					oElement.addEventListener(sEventType, oFunc, false)
				} else {
					oElement["on" + sEventType] = oFunc
				}
			}
			return true
		}
	});
	STK.register("core.util.winSize", function($) {
		return function(_target) {
			var w, h;
			if (_target) {
				target = _target.document
			} else {
				target = document
			}
			if (target.compatMode === "CSS1Compat") {
				w = target.documentElement.clientWidth;
				h = target.documentElement.clientHeight
			} else {
				w = target.body.clientWidth;
				h = target.body.clientHeight
			}
			return {
				width : w,
				height : h
			}
		}
	});
	STK
			.register(
					"core.util.pageSize",
					function($) {
						return function(_target) {
							if (_target) {
								target = _target.document
							} else {
								target = document
							}
							var _rootEl = (target.compatMode == "CSS1Compat" ? target.documentElement
									: target.body);
							var xScroll, yScroll;
							if (window.innerHeight && window.scrollMaxY) {
								xScroll = _rootEl.scrollWidth;
								yScroll = window.innerHeight
										+ window.scrollMaxY
							} else {
								if (_rootEl.scrollHeight > _rootEl.offsetHeight) {
									xScroll = _rootEl.scrollWidth;
									yScroll = _rootEl.scrollHeight
								} else {
									xScroll = _rootEl.offsetWidth;
									yScroll = _rootEl.offsetHeight
								}
							}
							var win_s = $.core.util.winSize(_target);
							if (yScroll < win_s.height) {
								pageHeight = win_s.height
							} else {
								pageHeight = yScroll
							}
							if (xScroll < win_s.width) {
								pageWidth = win_s.width
							} else {
								pageWidth = xScroll
							}
							return {
								page : {
									width : pageWidth,
									height : pageHeight
								},
								win : {
									width : win_s.width,
									height : win_s.height
								}
							}
						}
					});
	STK.register("core.util.templet", function($) {
		return function(template, data) {
			return template.replace(/#\{(.+?)\}/ig, function() {
				var key = arguments[1].replace(/\s/ig, "");
				var ret = arguments[0];
				var list = key.split("||");
				for ( var i = 0, len = list.length; i < len; i += 1) {
					if (/^default:.*$/.test(list[i])) {
						ret = list[i].replace(/^default:/, "");
						break
					} else {
						if (data[list[i]] !== undefined) {
							ret = data[list[i]];
							break
						}
					}
				}
				return ret
			})
		}
	});
	STK.register("core.func.bind", function($) {
		return function(obj, fun, args) {
			args = $.core.arr.isArray(args) ? args : [ args ];
			return function() {
				return fun.apply(obj, args)
			}
		}
	});
	STK.register("core.util.scrollPos", function($) {
		return function(oDocument) {
			oDocument = oDocument || document;
			var dd = oDocument.documentElement;
			var db = oDocument.body;
			return {
				top : Math.max(window.pageYOffset || 0, dd.scrollTop,
						db.scrollTop),
				left : Math.max(window.pageXOffset || 0, dd.scrollLeft,
						db.scrollLeft)
			}
		}
	});
	var cardWidth = 290, cardHeight = 185;
	var timeout, timeDelay = 300;
	var mouseMoveover = false;
	var card, cardBoder, cardContainer, cardContainerContent, cardContainerBar, cardTip;
	var cardInit = function() {
		card = STK.C("div");
		card.className = "weibo_widget_hovercard_card";
		card.style.zIndex = "999";
		cardBoder = STK.C("div");
		cardBoder.className = "weibo_widget_hovercard_border";
		cardContainer = STK.C("div");
		cardContainer.className = "weibo_widget_hovercard_container";
		cardContainerContent = STK.C("div");
		cardContainerContent.className = "weibo_widget_hovercard_content";
		cardContainerBar = STK.C("div");
		cardContainerBar.className = "weibo_widget_hovercard_bar";
		cardTip = STK.C("div");
		cardTip.className = "weibo_widget_hovercard_tip_tl";
		cardContainer.appendChild(cardContainerContent);
		cardContainer.appendChild(cardContainerBar);
		card.appendChild(cardBoder);
		card.appendChild(cardContainer);
		card.appendChild(cardTip);
		STK.core.evt.addEvent(card, "mouseover", function() {
			clearTimeout(timeout);
			mouseMoveover = true
		});
		STK.core.evt.addEvent(card, "mouseout", function() {
			mouseMoveover = false;
			timeout = setTimeout(function() {
				STK.core.dom.setStyle(card, "display", "none")
			}, timeDelay)
		});
		STK.core.dom.setStyle(card, "display", "none");
		document.body.appendChild(card)
	};
	var cardContentTemplet = '<div class="weibo_widget_hovercard_avatar"><a href="http://weibo.com/#{id}" target="_blank"><img src="#{profile_image_url}" alt="#{screen_name}"/></a><div class="weibo_widget_hovercard_icon"></div></div><div class="weibo_widget_hovercard_name"><a href="http://weibo.com/#{id}" target="_blank">#{screen_name}#{verified_image}</a></div><div class="weibo_widget_hovercard_info">#{location}<img class="icon_trans weibo_widget_hovercard_gende_#{gender}" alt="" src="http://img.wcdn.cn/t3/style/images/common/transparent.gif"/></div><div class="weibo_widget_hovercard_description">#{description}</div><div class="weibo_widget_hovercard_status">#{text}</div><div class="weibo_widget_hovercard_count"><div class="weibo_widget_hovercard_count_1"><span class="weibo_widget_hovercard_count_link"><a href="http://weibo.com/#{id}/follow" target="_blank">关注</a> #{friends_count}</span></div><div class="weibo_widget_hovercard_count_1"><span class="weibo_widget_hovercard_count_link"><a href="http://weibo.com/#{id}/fans" target="_blank">粉丝</a> #{followers_count}</span></div><div class="weibo_widget_hovercard_count_2"><span class="weibo_widget_hovercard_count_link"><a href="http://weibo.com/#{id}/profile" target="_blank">微博</a> #{statuses_count}</span></div><div class="weibo_widget_hovercard_count">';
	var mouseOver = (function() {
		var _this, screen_name;
		var userCache = {};
		var flollowButtonCache = {};
		var getFollowButton = function(uid) {
			if (flollowButtonCache[uid]) {
				return flollowButtonCache[uid]
			} else {
				var sp = STK.C("div");
				sp.className = "weibo_widget_hovercard_btn";
				WB.widget.base.followButton(uid, sp);
				flollowButtonCache[uid] = sp;
				return sp
			}
		};
		var loadUserJsonData = function() {
			WB.client
					.parseCMD(
							"/users/show.json",
							function(sResult, bStatus) {
								if (sResult && sResult.error_code == "403") {
									cardContainerContent.innerHTML = '<div class="weibo_widget_hovercard_error">API连接错误</div>';
									STK.core.dom.setStyle(cardContainerBar,
											"display", "none");
									return false
								}
								if (sResult && sResult.error_code == "400") {
									cardContainerContent.innerHTML = '<div class="weibo_widget_hovercard_error">这个人可能还不是微博用户，或您还未登录新浪微博</div>';
									STK.core.dom.setStyle(cardContainerBar,
											"display", "none");
									return false
								}
								userCache[screen_name] = sResult;
								STK.core.dom.setStyle(cardContainerBar,
										"display", "");
								showCard(sResult)
							}, {
								screen_name : encodeURI(screen_name)
							}, {
								method : "post"
							})
		};
		var cardPostionFix = function() {
			var pos = STK.core.dom.position(_this);
			if (pos == false) {
				return
			}
			var pageSize = STK.core.util.pageSize();
			var scrollPos = STK.core.util.scrollPos();
			var cardTipClass = "weibo_widget_hovercard_tip_tl";
			var cardPostionY = pos.t;
			var cardPostionX = pos.l;
			var rightViewArea = cardPostionX + cardWidth - scrollPos.left < pageSize.win.width;
			var bottomViewArea = cardPostionY + cardHeight - scrollPos.top < pageSize.win.height;
			if (bottomViewArea) {
				cardPostionY += _this.offsetHeight + 3
			}
			if (!rightViewArea) {
				cardPostionX -= cardWidth - _this.offsetWidth
			}
			if (!bottomViewArea) {
				cardPostionY -= cardHeight + 3
			}
			if (!rightViewArea && bottomViewArea) {
				cardTipClass = "weibo_widget_hovercard_tip_tr"
			} else {
				if (!rightViewArea && !bottomViewArea) {
					cardTipClass = "weibo_widget_hovercard_tip_br"
				} else {
					if (rightViewArea && !bottomViewArea) {
						cardTipClass = "weibo_widget_hovercard_tip_bl"
					}
				}
			}
			STK.core.dom.setStyle(card, "top", cardPostionY + "px");
			STK.core.dom.setStyle(card, "left", cardPostionX + "px");
			STK.core.dom.setStyle(card, "display", "block");
			cardTip.className = cardTipClass
		};
		var showCard = function(userJson) {
			userJson.verified_image = userJson.verified ? '<img src="http://img.wcdn.cn/t3/style/images/common/transparent.gif" alt="" class="icon_trans weibo_widget_hovercard_verified" />'
					: "";
			userJson.description = STK.core.str.leftB(userJson.description, 28) == userJson.description ? userJson.description
					: (STK.core.str.leftB(userJson.description, 28) + "...");
			if (userJson.status == null) {
				userJson.text = "这个人目前还没发表过微博"
			} else {
				userJson.text = userJson.status.text;
				if (STK.core.str.bLength(userJson.text) < 16
						&& userJson.status.retweeted_status != null) {
					userJson.text += "  //@"
							+ userJson.status.retweeted_status.user.screen_name
							+ ":" + userJson.status.retweeted_status.text
				}
				var tmp = STK.core.str.leftB(userJson.text, 70);
				if (tmp != userJson.text) {
					userJson.text = STK.core.str.leftB(userJson.text, 70)
							+ "..."
				}
				if (userJson.status.thumbnail_pic != null) {
					userJson.text += '[<a href="' + userJson.status.bmiddle_pic
							+ '" target="_blank">图</a>]'
				} else {
					if (userJson.status.retweeted_status != null) {
						if (userJson.status.retweeted_status.thumbnail_pic != null) {
							userJson.text += '[<a href="'
									+ userJson.status.retweeted_status.bmiddle_pic
									+ '" target="_blank">图</a>]'
						}
					}
				}
			}
			cardContainerContent.innerHTML = STK.core.util.templet(
					cardContentTemplet, userJson);
			STK.core.dom.removeNode(cardContainerBar.childNodes[0]);
			cardContainerBar.appendChild(getFollowButton(userJson.id))
		};
		var makeCard = function() {
			cardPostionFix();
			if (userCache[screen_name]) {
				showCard(userCache[screen_name])
			} else {
				cardContainerContent.innerHTML = '<img class="weibo_widget_hovercard_loading" src="http://img.wcdn.cn/t3/style/images/common/card/widget_loading.gif"/>';
				loadUserJsonData()
			}
		};
		return function() {
			if (card == null) {
				return
			}
			_this = this;
			screen_name = _this.getAttribute("wb_screen_name");
			clearTimeout(timeout);
			timeout = setTimeout(makeCard, timeDelay)
		}
	})();
	var mouseOut = function() {
		clearTimeout(timeout);
		timeout = setTimeout(function() {
			if (card == null) {
				return
			}
			if (!mouseMoveover) {
				STK.core.dom.setStyle(card, "display", "none")
			}
		}, timeDelay)
	};
	var searchAndReplace = function(elm) {
		elm = elm || document.body;
		var refushTag = [ "a", "script", "noscript", "object", "iframe",
				"textarea", "input", "select", "button", "style", "pre", "xmp" ];
		var searchValue = /@([\-_a-z0-9\u4E00-\u9FA5]+)/gi;
		var inArray = function(elem, array) {
			if (array.indexOf) {
				return array.indexOf(elem)
			}
			for ( var i = 0, length = array.length; i < length; i++) {
				if (array[i] === elem) {
					return i
				}
			}
			return -1
		};
		(function(thisElement) {
			var _callee = arguments.callee;
			var nodes = thisElement.childNodes;
			var l = nodes.length;
			if (!l) {
				return
			}
			var tmp = [];
			for ( var i = 0; i < l; i++) {
				tmp[i] = nodes[i]
			}
			nodes = tmp;
			STK.core.arr
					.foreach(
							nodes,
							function(node) {
								if (node.nodeType == 1
										&& inArray(node.tagName.toLowerCase(),
												refushTag) == -1) {
									_callee(node)
								} else {
									if (node.nodeType == 3
											&& inArray(node.parentNode.tagName
													.toLowerCase(), refushTag) == -1) {
										if (!node.nodeValue.match(searchValue)) {
											return
										}
										var ret = node.nodeValue
												.replace(/</g, "&lt;")
												.replace(/>/g, "&gt;")
												.replace(
														searchValue,
														'<a target="_blank" style="white-space:nowrap" wb_screen_name="$1" href="http://weibo.com/n/$1">@$1</a>');
										var tempNode = STK.C("div");
										tempNode.innerHTML = ret;
										var parent = node.parentNode;
										var newNode = tempNode.lastChild;
										parent.replaceChild(newNode, node);
										while (tempNode.firstChild) {
											parent.insertBefore(
													tempNode.firstChild,
													newNode)
										}
									}
								}
							})
		})(elm);
		blogAt(elm, "a")
	};
	var blogAt = function(elm, tag) {
		var atEvent = function(tagA) {
			STK.core.evt.addEvent(tagA, "mouseover", STK.core.func.bind(tagA,
					mouseOver));
			STK.core.evt.addEvent(tagA, "mouseout", STK.core.func.bind(tagA,
					mouseOut))
		};
		if (!tag) {
			if (elm.getAttribute("wb_screen_name")) {
				atEvent(elm)
			}
		} else {
			var tagA = elm.getElementsByTagName(tag);
			var tagALength = tagA.length;
			for ( var i = 0; i < tagALength; i++) {
				var thisTag = tagA[i];
				if (thisTag.getAttribute("wb_screen_name")) {
					atEvent(thisTag)
				}
			}
		}
	};
	STK.Ready(cardInit);
	var that = {};
	that.searchAndAt = searchAndReplace;
	that.blogAt = blogAt;
	WB.regist("widget.atWhere", that)
})();